class StringEX
{
  //格式化字符串
  static Format(str)
  {
    var args = [];
    for (var _i = 1; _i < arguments.length; _i++) {
      args[_i - 1] = arguments[_i];
    }
    return str.replace(/\{(\d+)\}/g, function (m, i) {
      return args[i];
    });
  }

  //32位全球唯一码
  static Guid() {
    return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
  }

  static Uuid4() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
      var r = Math.random() * 16 | 0,
        v = c == 'x' ? r : (r & 0x3 | 0x8);
      return v.toString(16).toUpperCase();
    });
  } 

  //获取文件扩展名
  static GetFileExtension(path)
  {
    var index = path.lastIndexOf(".");
    return index<0?"":path.substr(index);
  }

  

  //去除首尾空白
  static Trim(str)
  {
    if(!str) return ""
    return String(str).replace(/^\s+|\s+$/g, '');
  }

  //对字符串增加遮罩
  //pstr 原始字符串
  //maskCh 遮罩字符
  //beginVisibleNum 开始位置保留的可见字符数量
  //endVisibleNum 结束位置保留的可见字符数量
  static Mask(pstr, maskCh = '*', beginVisibleNum=3, endVisibleNum=4)
  {
    var nstr = ""
    for (var j = 0; j < pstr.length; j++) {
      if (j < beginVisibleNum || j >= pstr.length - endVisibleNum)
        nstr += pstr.charAt(j)
      else
        nstr += maskCh
    }
    return nstr
  }

 
  //从url中提取参数和网址
  static ParseUrl(url)
  {
    var a = url.split("?")
    if(a.length<2)//只有地址，没有参数
     return {
      url:url,
      param:{}
    }


    var str = a[1];                     //提取链接上的参数信息
    var iterms = str.split("&");                //拆分参数
    var arr, Json = {};
    for (var i = 0; i < iterms.length; i++) {
      arr = iterms[i].split("=");
      Json[arr[0]] = arr[1];
    }

    //返还数值
    return {
      url: a[0],
      param: Json
    } 
  }

}

export { StringEX as stringEx }